There are many commercially successful non-volatile memory products being used today, particularly in the form of small form factor cards, which employ flash EEPROM (Electrically Erasable and Programmable Read Only Memory) cells formed on one or more integrated circuit devices. Some of the commercially available card formats include CompactFlash (CF) cards, MultiMedia cards (MMC), and Secure Digital (SD) cards. Hosts include personal computers, notebook computers, personal digital assistants (PDAs), various data communication devices, digital cameras, cellular telephones, portable audio players, automobile sound systems, and similar types of equipment. In some systems, a removable card does not include a controller and the host controls operation of the memory in the card. Examples of this type of memory system include Smart Media cards and xD cards. Thus, control of the memory may be achieved by software (or firmware) on a controller in the card or by control software (or firmware) in the host. Besides a memory card implementation, this type of memory can alternatively be embedded into various types of host systems. In both removable and embedded applications, host data may be stored in the memory according to a storage scheme implemented by memory control software.
The memory control software may interface with a host file system, which, in turn, may interface with a memory file manager which provides an application programming interface (API) to applications accessing the memory. Host file systems may support a set of read and write commands to access storage systems connected to the host, may be optimized for the resource limitations or features of the host, and may include advanced features such as multi-thread support.
The feature set of a memory file manager communicating with the memory control software through a host file system may be limited by the command set, such as read and write commands, provided by the host file system interface. The limitations of the host file system interface may be a barrier to implementing a set of required features for accessing a memory storage system. A second challenge arises when attempts are made to overcome these limitations by supplementing a host file system with an additional, specialized file system, which may, alone or in combination with the host file system, implement all of the required features specific to accessing the memory. In particular, when a host file system and a specialized file system operate in parallel with one another their file system information needs to be synchronized.